package org.jim.core.helper;

import org.jim.core.packets.pub.pojo.JimUser;
import org.jim.core.packets.pub.consts.UserStatusType;

import java.util.List;
import java.util.Objects;

/**
 * @FileName: UserMessageHelper
 * @Description:
 * @Author linjie
 * @Date 2020/7/293:48 PM
 * @Version 4.0.0
 */
public interface IUserHelper {
    /**
     * 判断用户是否在线
     *
     * @param userId 用户ID
     * @return
     */
    boolean isOnline(String userId);


    /**
     * 初始化用户在线状态;
     *
     * @param user
     */
    default boolean initUserStatus(JimUser user) {
        if (Objects.isNull(user) || Objects.isNull(user.getUsername())) {
            return false;
        }
        String userId = user.getUsername();
        boolean isOnline = this.isOnline(userId);
        if (isOnline) {
            user.setStatus(UserStatusType.ONLINE.getStatus());
        } else {
            user.setStatus(UserStatusType.OFFLINE.getStatus());
        }
        return true;
    }


    /**
     * 根据在线类型获取用户信息;
     *
     * @param userId                                用户ID
     * @param type(0:所有在线用户,1:所有离线用户,2:所有用户[在线+离线])
     * @return
     */
    JimUser getUserByType(String userId, Integer type);


    /**
     * 更新用户终端协议类型及在线状态;(在线:online:离线:offline)
     *
     * @param user 用户信息
     */
    boolean updateUserTerminal(JimUser user);

    /**
     * 获取在线客服
     *
     * @return
     */
    default List<String> getOnlineCsList(String tenantId, String orgId) {
        return null;
    }

}
